%%HTML
<link rel='stylesheet' href='./src/desafioICEI.css'>
import json
#from urllib.request import urlopen
import pandas as pd
import matplotlib.pyplot as plt
import plotly
import plotly.express as px
import seaborn as sns
from IPython.display import Markdown
#from ipywidgets import interact, interactive, fixed, interact_manual
#import ipywidgets as widgets
import Leonardo_FuncoesGenericas as lf
import plotly.io as pio
pio.renderers.default='notebook'
plotly.offline.init_notebook_mode()
df = pd.read_csv("./src/APobrezaInfantilEmMinasGerais.csv")
geojson = json.load(open("./src/geojson_MG_simplificado_100_vezes.json"))

A Pobreza Infantil em Minas Gerais (IBGE 2010)¶
Autor: Leonardo Ribeiro Andrade
Curso: Sistemas de Informação
- A Pobreza Infantil em Minas Gerais (IBGE 2010))
- 1. Introdução
- 2. Visualizações
- 2.1 Tabela - Amostragem dos dados
- 2.2 Barras - Os 10 Municípios Com Maior Quantidade de Crianças Pobres ou Vulneráveis
- 2.3 Mapa Coroplético - Quantidade de crianças pobres ou vulneráveis Por Município
- 2.4 Mapa Coroplético - Porcentagem de Crianças Pobres ou Vulneráveis Por Município
- 2.5 Mapa de Calor - Relação Entre Pobreza Infantil e Habitantes
- 3. Análise
1. Introdução
(Este documento é uma Análise Exploratória de Dados do censo IBGE 2010, com foco nos municípios de Minas Gerais. Foi desenvolvido como entrega para o 1° Desafio de Ciência de Dados PUC Minas. Recomenda-se sua visualização através do Google Chrome)
Com mais de 2,5 milhões de habitantes, o estado de Minas Gerais é o 2° mais populoso de todo o país, mas será que seu PIB de 258 bilhões alcança suas crianças de maneira igual, permitindo um futuro justo para as próximas gerações?
Com o seguinte documento, o objetivo é averiguar como a pobreza infantil afeta os municípios de Minas Gerais e quais aqueles mais carentes e necessitados de intervenção.
Tabela - Ferramentas Utilizadas¶
| Ferramenta | Tipo | Uso |
|---|---|---|
| JupyterLab | Aplicação Web em servidor local | Ambiente de manipulação, visualização, e exportação dos dados |
| Python | Linguagem de Programação | Ferramenta base para as bibliotes de manipulação e visualização |
| Pandas | Biblioteca Python | Manipulação dos dados |
| Plotly Express | Biblioteca Python | Visualização e exportação interativa dos dados |
| CSS | Linguagem de Estilos | Estilizar o documento |
| Google Sheets | Aplicação Web | Visita inicial aos dados e criação dos novos atributos/colunas |
| geodata-br | Repositório | Obtenção do arquivo GeoJSON do estado de Minas Gerais |
| MapShaper | Aplicação Web | Simplificação do arquivo GeoJson |
| BitDownTOC | Aplicação Web | Criação do índice do documento |
Tabela - Atributos da Base de Dados¶
| Atributo | Significado |
|---|---|
| municipio | Nome do município |
| domicilios | Número de domicílios |
| domicilios_crianca_fora_da_escola | Domicílio com pelo menos uma pessoa com idade entre 6 e 17 anos que não frequenta escola |
| domicilios_crianca_com_distorcao_escolar | Domicílio com pelo menos uma pessoa com idade entre 8 e 17 anos com 2 ou mais anos de idade acima do recomendado para a série/ano que está cursando |
| domicilios_com_trabalho_infantil | Domicílio em que pelo menos uma criança de 10 a 15 anos estava trabalhando na semana de referência |
| criancas_ate_11_anos | Número de crianças de com idade de 0 a 11 anos |
| criancas_ate_11_anos_pobres_vulneraveis | Número de crianças de 0 a 11 anos pobres ou vulneráveis |
| porcentagem_domicilios_crianca_fora_da_escola | Porcentagem de domicílios com crianças de 6 a 17 que não frequentam a escola (comparado com o atributo domicilios) |
| porcentagem_domicilios_crianca_com_distorcao_escolar | Porcentagem de domicílios com crianças de 8 a 17 com distorção escolar de 2 oau mais anos (comparado com o atributo domicilios) |
| porcentagem_domicilios_trabalho_infantil | Porcentagem de domicílios com crianças de 8 a 17 com distorção escolar de 2 ou mais anos (comparado com o atributo domicilios) |
| habitantes_aproximacao | Aproximação do número de habitantes multiplicando o atributo domicilios com a média de moradores por domicílios levantado pelo IBGE em 2010 (3,31) |
| gini | Índice de GINI do estado calculado pelo censo IBGE 2010 |
2. Visualizações¶
Tabela - Amostragem dos dados¶
df.info()
<class 'pandas.core.frame.DataFrame'> RangeIndex: 853 entries, 0 to 852 Data columns (total 13 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 municipio 853 non-null object 1 domicilios 853 non-null int64 2 domicilios_crianca_fora_da_escola 853 non-null int64 3 domicilios_crianca_com_distorcao_escolar 853 non-null int64 4 domicilios_com_trabalho_infantil 853 non-null int64 5 criancas_ate_11_anos 853 non-null int64 6 criancas_ate_11_anos_pobres_vulneraveis 853 non-null int64 7 porcentagem_domicilios_crianca_fora_da_escola 853 non-null float64 8 porcentagem_domicilios_crianca_com_atraso_escolar 853 non-null float64 9 porcentagem_domicilios_trabalho_infantil 853 non-null float64 10 porcentagem_criancas_pobres_vulneraveis 853 non-null float64 11 habitantes_aproximacao 853 non-null int64 12 gini 853 non-null float64 dtypes: float64(5), int64(7), object(1) memory usage: 86.8+ KB
df.sort_values(by="habitantes_aproximacao", ascending=False).head(10)
| municipio | domicilios | domicilios_crianca_fora_da_escola | domicilios_crianca_com_distorcao_escolar | domicilios_com_trabalho_infantil | criancas_ate_11_anos | criancas_ate_11_anos_pobres_vulneraveis | porcentagem_domicilios_crianca_fora_da_escola | porcentagem_domicilios_crianca_com_atraso_escolar | porcentagem_domicilios_trabalho_infantil | porcentagem_criancas_pobres_vulneraveis | habitantes_aproximacao | gini | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 65 | Belo Horizonte | 768685 | 3153 | 5539 | 1968 | 347804 | 44869 | 0.4102 | 0.7206 | 0.2560 | 12.9007 | 2544347 | 0.6106 |
| 824 | Uberlândia | 198156 | 1375 | 1994 | 575 | 98305 | 11743 | 0.6939 | 1.0063 | 0.2902 | 11.9455 | 655896 | 0.5122 |
| 205 | Contagem | 187429 | 1310 | 2115 | 588 | 100940 | 15460 | 0.6989 | 1.1284 | 0.3137 | 15.3160 | 620390 | 0.4953 |
| 418 | Juiz de Fora | 172973 | 1297 | 2375 | 735 | 75207 | 13559 | 0.7498 | 1.3730 | 0.4249 | 18.0289 | 572541 | 0.5655 |
| 71 | Betim | 113785 | 1089 | 1848 | 499 | 72464 | 14798 | 0.9571 | 1.6241 | 0.4385 | 20.4212 | 376628 | 0.4840 |
| 500 | Montes Claros | 105295 | 1091 | 1761 | 629 | 65779 | 17450 | 1.0361 | 1.6724 | 0.5974 | 26.5282 | 348526 | 0.5391 |
| 823 | Uberaba | 99584 | 370 | 970 | 303 | 44836 | 7008 | 0.3715 | 0.9741 | 0.3043 | 15.6303 | 329623 | 0.5052 |
| 636 | Ribeirão das Neves | 89483 | 1328 | 1945 | 411 | 59422 | 18059 | 1.4841 | 2.1736 | 0.4593 | 30.3911 | 296189 | 0.4080 |
| 314 | Governador Valadares | 83051 | 830 | 1509 | 418 | 47619 | 10978 | 0.9994 | 1.8170 | 0.5033 | 23.0538 | 274899 | 0.5377 |
| 356 | Ipatinga | 73726 | 574 | 663 | 198 | 40334 | 6223 | 0.7786 | 0.8993 | 0.2686 | 15.4287 | 244033 | 0.5236 |
Barras - Os 10 Municípios Com Maior Quantidade de Crianças Pobres ou Vulneráveis¶
%%capture
# def f(municipios=5, asc=False):
# temp = df.sort_values(by="criancas_ate_11_anos_pobres_vulneraveis", ascending=asc).head(municipios)
# fig = px.bar(temp,
# x="municipio",
# y="criancas_ate_11_anos_pobres_vulneraveis",
# labels={"municipio" : "Município", "criancas_ate_11_anos_pobres_vulneraveis" : "Crianças"},
# hover_name="municipio",
# color="criancas_ate_11_anos_pobres_vulneraveis",
# orientation="v",
# range_color=[0, 30000],
# color_continuous_scale=["gray", "red"])
# fig.show()
# interact(f, municipios=widgets.IntText(description="Quantidade de municípios", value=5),
# asc=widgets.Checkbox(description="Crescente", value=False))
temp = df.sort_values(by="criancas_ate_11_anos_pobres_vulneraveis", ascending=False).head(10)
#lf.barras(temp, y="criancas_ate_11_anos_pobres_vulneraveis", range_color=[0, 30000], labels={"municipio" : "Município", "criancas_ate_11_anos_pobres_vulneraveis" : "Crianças"})
fig = px.bar(temp,
x="municipio",
y="criancas_ate_11_anos_pobres_vulneraveis",
labels={"municipio" : "Município", "criancas_ate_11_anos_pobres_vulneraveis" : "Crianças"},
hover_name="municipio",
color="criancas_ate_11_anos_pobres_vulneraveis",
orientation="v",
range_color=[0, 30000],
text_auto=True,
color_continuous_scale=["gray", "red"])
fig.update_layout(dragmode=False)
fig.show(config={"displayModeBar" : False})
# temp = temp = df.sort_values(by="criancas_ate_11_anos_pobres_vulneraveis", ascending=False).head(6)
# chart = sns.barplot(temp, x="municipio", y="criancas_ate_11_anos_pobres_vulneraveis")
# plt.xticks(rotation=330, ha="left",rotation_mode='anchor')
# #chart.set_xticklabels(chart.get_xticklabels(), rotation=30)
# plt.tight_layout()
Mapa Coroplético - Quantidade de crianças pobres ou vulneráveis Por Município¶
temp = df.sort_values(by=["municipio"])
fig = px.choropleth_mapbox(temp,
mapbox_style="carto-positron",
geojson=geojson,
featureidkey="properties.name",
locations="municipio",
color="criancas_ate_11_anos_pobres_vulneraveis",
color_continuous_scale=[(0.00, "goldenrod"),
(0.25, "goldenrod"),
(0.25, "yellow"),
(0.50, "yellow"),
(0.50, "orangered"),
(0.75, "orangered"),
(0.75, "red"),
(1.00, "red")],
range_color=(0, 10000),
#color_discrete_map={'High':'red', 'Moderate':'Yellow','Low':'Green'},
zoom=4.5,
center={"lat":-18.56647372590101, "lon": -44.554648114723946})
fig.update_layout(margin={"r":0,"t":0,"l":0,"b":0})
fig.update_layout(coloraxis_colorbar=dict(
title="Quantidade",
tickvals=[2500-1250,5000-1250,7500-1250,10000-1250],
ticktext=["Menos de 2.500","2.500 a 5.000","5.000 a 7.500", "Mais de 10.000"],
))
fig.show()
Mapa Coroplético - Porcentagem de Crianças Pobres ou Vulneráveis Por Município¶
temp = df.sort_values(by=["municipio"])
fig = px.choropleth_mapbox(temp,
mapbox_style="carto-positron",
geojson=geojson,
featureidkey="properties.name",
locations="municipio",
color="porcentagem_criancas_pobres_vulneraveis",
color_continuous_scale=[(0.00, "goldenrod"),
(0.25, "goldenrod"),
(0.25, "yellow"),
(0.50, "yellow"),
(0.50, "orangered"),
(0.75, "orangered"),
(0.75, "red"),
(1.00, "red")],
range_color=(0.00, 100.00),
#color_discrete_map={'High':'red', 'Moderate':'Yellow','Low':'Green'},
zoom=4.5,
center={"lat":-18.56647372590101, "lon": -44.554648114723946})
fig.update_layout(margin={"r":0,"t":0,"l":0,"b":0})
fig.update_layout(coloraxis_colorbar=dict(
title="Quantidade",
tickvals=[25-12.5,50-12.5,75-12.5,100-12.5],
ticktext=["menos de 25%","25% a 50%","50% a 75%", "Mais de 75%"]
))
fig.show()
Mapa de Calor - Relação Entre Pobreza Infantil e Habitantes¶
#temp1 = df.iloc[0].corr(numeric_only=True)
temp = df.iloc[:,[6, 10, 3, 2, 1]]
temp = temp.corr(numeric_only=True).iloc[:, [0,1]]
temp = temp.drop(index=["criancas_ate_11_anos_pobres_vulneraveis", "porcentagem_criancas_pobres_vulneraveis"])
sns.heatmap(temp, annot=True, center=0.5, cmap="mako", linewidths=1, linecolor="lightgreen", )
<Axes: >
3. Análise¶
Com os dados avaliados, pode-se concluir que a pobreza infantil em 2010 fazia parte da vida de inúmeras crianças de 0 a 11 anos, atingindo cerca de 34,1% destas em Minas Gerais. Como apresentam as visualizações de mapa, as pequenas cidades ao nordeste do estado, ainda que não sejam tão populosas quanto as centrais, são as mais afetadas e prejudicadas, sofrendo com altos índices de pobreza infantil em relação a sua população de crianças.
Com a visualização Mapa de Calor, Podemos notar como a porcentagem de crianças pobres ou vulneráveis possui uma relação levemente inversa quanto ao número de habitantes de um dado município, evidenciando novamente como os municípios menores são geralmente os mais afetados.